package com.cxyjy.cfyuiapi.controller;

import com.cxyjy.cfyuiapi.service.QueryHistoryService;
import com.cxyjy.cfyuiapi.service.ViewService;
import com.cxyjy.common.util.JResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;


@RestController
public class ViewController {
    @Autowired
    ViewService viewService;
    @Autowired
    QueryHistoryService queryHistoryService;

    /**
     * 查看视频接口
     *
     * 根据前端传过来的promptId，使用comfyUI的/history接口查出工作流信息。
     * （✕然后通过工作流json的outputs字段取到filename、type、subfolder等信息）
     *
     * PS:目前最新的拼接好的完整视频不需要这些信息，只需要文件名，通过http://{comfyuiurl:port}/view?filename=20241120191338.mp4这种url即可取到视频
     * 因为comfyUI的/view接口直接就是一个视频流 所以将url拼接好以后直接返回前端
     * 并将其作为<video>元素的src值即可
     *
     * @param promptId
     * @return
     * @throws IOException
     */
    @GetMapping("/viewVideo")
    public JResponse viewVideo(String promptId) throws IOException {
        return viewService.viewVideo(promptId);
    }

    /**
     * 同上
     * 测试一个较短的视频
     *
     * @param promptId
     * @throws IOException
     */
    @GetMapping("/viewVideoTest")
    public JResponse viewVideoTest(@RequestParam String promptId) throws IOException {
        return viewService.viewVideoTest(promptId);
    }

    /**
     * 预览图片
     *
     * @param promptId  必需
     * @return
     * @throws IOException
     * @throws NoSuchMethodException
     */
    @GetMapping("/viewImg")
    public JResponse view(@RequestParam String promptId)throws IOException {
        return viewService.view(promptId);
    }
}
